package com.fly.consultant.service;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;
import reactor.core.publisher.Flux;

@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,//手动装配
        chatModel = "openAiChatModel",//指定模型
        streamingChatModel = "openAiStreamingChatModel",//指定流式模型
        //chatMemory = "chatMemory"//指定记忆模型
        chatMemoryProvider = "chatMemoryProvider",//指定记忆模型提供者
        contentRetriever = "contentRetriever",//指定检索模型
        tools = "reservationTool"
)
//@AiService
public interface ConsultantService {

    // 流式调用
//    @SystemMessage("你是小乐，是一个智能AI助手")
//    @UserMessage("你是小乐，是一个智能AI助手，{{msg}}")
    @SystemMessage(fromResource = "system.txt")
    Flux<String> chat(@MemoryId String memoryId,@UserMessage String message);

    // 默认阻塞调用
//    String chat(String message);

}
